package com.mew.slots.core.common.vo;

import com.alibaba.fastjson.JSON;
import com.mew.common.entity.game.WinFree;
import lombok.*;

import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Description: 策略和子游戏交互 对象
 * @Author King.Song
 * @Date 2019/8/29 0029
 **/
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class StrategyGameVO implements Serializable {

    //子游戏调用策略的方法获取，轴ID，拉升等信息；需要赋值的字段
    private Long userId;  //用户ID
    private Integer roomId;  //房间ID
    private long inBetNumber; //前端传入的押注金额信息
    private int bonusType;
    private int[] otherMsg;//自定义参数

    private WinFree winFree;
    private int lineNumber; //线数
    private long minBetNumber;//最小压注
    private long maxBetNumber;//最大压注

    //策略给子游戏的值
    private int winProb;
    private int rollerId = 5; //5
    private int controlType; //0
    private long maximumBonus; // 0
    private int roomRecord = 1;

    //子游戏经过计算 返回策略需要赋值
    private int winType; // 0: 没有； 1，免费， 3， 特殊，4，jackpot【0:则修改最后一次押注金额，否则不修改】
    private long betNumber; //押注金额
    private long paymentNumber; //赔付
    private int betTimes; //倍数
    private boolean special;  // 是否中特殊 true 表示中特殊
    private String iconResult; // 游戏押注之后的图标；
    private int notRecord = 0; //0: 全写， -1,全全


    private int stat = 200; //200 表示成功； 否则表示失败； 需要返回错误码；

    public void iconResult(int[] ints,int...icon){
        List<Integer> centerlog = Arrays.stream(ints).boxed().collect(Collectors.toList());
        for (int i : icon) {
            centerlog.add(i);
        }
        this.setIconResult(JSON.toJSONString(centerlog));
    }
}
